溝通橋樑:建構前後端 API 請求
在 Streamlit 介面中,當使用者點擊按鈕或按下 Enter 鍵時,我們就需要將這些輸入傳遞給後端的 Python 程式碼,由 AI 執行複雜的運算和 Function Calling。今天,我們就來學習如何打造這個至關重要的溝通橋樑。
在 Streamlit 專案中通常不需要寫複雜的 JavaScript 程式碼。Streamlit 的設計允許直接在 Python 中定義事件處理器 (Event Handler)。當使用者輸入文本並提交時,Streamlit 會自動觸發一個回呼(callback),重新運行包含 AI 邏輯的核心程式碼。
# 示範 Streamlit 如何觸發回呼
user_input = st.chat_input("請輸入您的問題...")
if user_input:
# Streamlit 事件處理器,觸發後續的 AI 邏輯
process_user_query(user_input)
無論是直接在 Streamlit 內部處理,還是透過 API 請求將資料發送給獨立的後端服務,關鍵都是格式化 (Formatting)。
使用者輸入的往往是一整句自然語言(例如:「台北的景點」)。因此必須確保這個文本能夠被正確地擷取,並作為單一的 query 參數傳遞給後端的 AI 模型。如果使用獨立的後端(如 FastAPI),前端發送的請求體通常會是 JSON 格式:
// 前端發送的 JSON 請求體
{
"query": "從台北 101 到故宮的路線",
"user_id": "..."
}
一旦請求發送,前端必須準備好處理後端拋出的錯誤碼。如果後端 AI 服務崩潰或驗證失敗,前端不能只是顯示一片空白。我們必須捕捉這些異常,並顯示錯誤訊息,確保使用者體驗不會中斷。